import { Injectable } from '@nestjs/common';
import { randomUUID } from 'crypto';

/**
 * UuidService —— 提供生成 UUID 的工具服务（静态模块示例）
 *
 * 设计初衷：
 * - 在多个业务模块中都可能需要生成随机 ID（如订单号、请求追踪 ID、临时资源标识）
 * - 把通用逻辑集中在 common/ 目录下，减少重复实现
 *
 * 为什么放在 common/uuid 而不是业务目录？
 * - 不依赖任何业务数据模型
 * - 没有数据库/网络等外部资源依赖
 * - 可以被任意功能模块直接复用
 *
 * 适用场景：
 * - 生成唯一字符串 ID
 * - 作为日志追踪的 correlation-id
 * - 临时对象的占位符 ID
 *
 * 方法说明：
 * - generate(): 返回一个无连字符或有连字符的标准 UUID v4（由 Node.js crypto.randomUUID 提供）
 */
@Injectable()
export class UuidService {
	/**
	 * 生成一个新的 UUID v4
	 * 注意：UUID 不是绝对唯一，但发生碰撞的概率极低，可满足绝大多数业务需求。
	 */
	generate(): string {
		return randomUUID();
	}
}
